package com.sigmatrix.h5.service;

import java.util.List;
import java.util.Map;

import com.sigmatrix.h5.entity.CodeCirculation;
import com.sigmatrix.h5.enums.CodeCirculationStatus;
import com.sigmatrix.h5.exception.ServiceException;
import com.sigmatrix.h5.web.vo.InStorageVo;
import com.sigmatrix.h5.web.vo.OutStorageVo;
import com.sigmatrix.sc.mongo.common.service.MongoService;

/**
 * 
 *@ClassName: CodeCirculationService
 *@Description: 码流转记录
 *@author MH
 *@date 2017年11月30日 上午10:09:07
 */
public interface CodeCirculationService extends MongoService<CodeCirculation>{
	
	/**
	 * 
	 *@Title: findByQrCode
	 *@Description: 通过qrCode查询最新一条记录
	 *@return CodeCirculation
	 *@author MH
	 *@date 2017年11月30日 上午10:16:04
	 *@param qrCode
	 *@return
	 */
	CodeCirculation findByQrCode(String qrCode);
	
	
	/**
	 * 分销app合并分支开始-------------------------------------
	 */

	/**
	 *@Title: saveOutStorageCodeCirculation
	 *@Description: TODO()
	 *@return void
	 *@author youjun
	 *@date 2017年8月13日 下午5:49:38
	 *@param outStorageVo
	 *@param map
	 * @throws ServiceException 
	 */
	void saveOutStorageCodeCirculation(OutStorageVo outStorageVo, Map<String, Object> map) throws ServiceException;

	/**
	 *@Title: saveInStorageCodeCirculation
	 *@Description: TODO()
	 *@return void
	 *@author youjun
	 *@date 2017年8月22日 下午2:34:32
	 *@param inStorageVo
	 *@param map
	 */
	void saveInStorageCodeCirculation(InStorageVo inStorageVo, Map<String, Object> map) throws ServiceException;

	/**
	 * 分销app合并分支结束-------------------------------------
	 */

	/**
	 * 根据qrCode查询 销售出库的 码流转信息
	 * 
	 *@return List<CodeCirculation>
	 *@author wjwei
	 *@date 2018年3月21日 下午2:29:18
	 *@param qrCode
	 *@return
	 */
	@Deprecated
	List<CodeCirculation> findListByQrCode(String qrCode);
	
	/**
	 * 
	 * @param qrCode
	 * @param eseCode
	 * @return
	 */
	@Deprecated
	List<CodeCirculation> findListByQrCode(String qrCode,String eseCode);

	/**
	 * 
	 * @param qrCode
	 * @param eseCode
	 * @param status
	 * @return
	 */
	List<CodeCirculation> findListByQrCode(String qrCode,String eseCode,CodeCirculationStatus status);
	
	
	public List<CodeCirculation> select(CodeCirculation t, Map<String, String> order,String eseCode);

}
